home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
modula.arc
/
SIEVE.MOD
< prev
next >
Wrap
Text File
|
1985-05-30
|
896b
|
34 lines
(* Compute a table of the first n primes numbers. Print m
numbers per line. Use the method of the sieve of Erasthenes. *)
MODULE sieve;
FROM Terminal IMPORT WriteString, WriteLn;
FROM InOut IMPORT WriteCard;
CONST size = 8190;
m = 10;
VAR flags: ARRAY[0..size] OF BOOLEAN;
i,prime,k,count: INTEGER;
BEGIN
count := 0;
FOR i := 0 TO size DO flags[i] := TRUE END;
FOR i := 0 TO size DO
IF flags[i] THEN
prime := i+i+3;
k := i+prime;
WHILE k <= size DO
flags[k] := FALSE;
INC(k,prime)
END;
INC(count);
WriteCard(prime,8);
IF count MOD m = 0 THEN WriteLn END
END
END;
WriteLn; WriteCard(count,0);
WriteString(' primes'); WriteLn
END sieve.